package com.hzw.saas.api.user.query;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzw.saas.api.product.dto.LicenseUserBO;
import com.hzw.saas.common.util.constants.PatternConsts;
import org.springframework.format.annotation.DateTimeFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @author zzl
 * @since 05/24/2021
 */
@Data
public class UserRightsProp implements Serializable {

    private static final long serialVersionUID = 7870946101619397954L;

    /**
     * AWS核时总数
     */
    @ApiModelProperty(value = "AWS核时总数（若不需自定义权益，请不要传递此属性）", position = 21)
    private Double awsCoreTime;

    /**
     * AWS核时有效期
     */
    @ApiModelProperty(value = "AWS核时有效期（若不需自定义权益，请不要传递此属性）,pattern="+ PatternConsts.NORM_DATE_PATTERN, position = 22)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date awsCoreTimeExpireTime;

    /**
     * HPC核时总数
     */
    @ApiModelProperty(value = "HPC核时总数（若不需自定义权益，请不要传递此属性）", position = 23)
    private Double hpcCoreTime;

    /**
     * 已分配的HPC核时总数
     */
    @ApiModelProperty(value = "已分配的HPC核时总数（若不需自定义权益，请不要传递此属性）", position = 24)
    private Double hpcCoreTimeAssigned;

    /**
     * HPC核时有效期
     */
    @ApiModelProperty(value = "HPC核时有效期（若不需自定义权益，请不要传递此属性）,pattern="+ PatternConsts.NORM_DATE_PATTERN, position = 25)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date hpcCoreTimeExpireTime;

    /**
     * 云存储空间大小，单位T/G/M
     */
    @ApiModelProperty(value = "云存储空间大小，单位T/G/M（若不需自定义权益，请不要传递此属性）", position = 26)
    private String cloudStorageSize;

    /**
     * 云存储空间有效期
     */
    @ApiModelProperty(value = "云存储空间有效期（若不需自定义权益，请不要传递此属性）,pattern="+ PatternConsts.NORM_DATE_PATTERN, position = 27)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date cloudStorageExpireTime;

    /**
     * 单个用户可用docker数
     */
    @ApiModelProperty(value = "单个用户可用docker数（若不需自定义权益，请不要传递此属性）", position = 28)
    private Integer dockerNumber;

    /**
     * docker自动回收时长,单位H/m
     */
    @ApiModelProperty(value = "docker自动回收时长,单位H/m（若不需自定义权益，请不要传递此属性）", position = 29)
    private String dockerRecycleDuration;

    /**
     * 可选软件数量（不包含必选数量）
     */
    @ApiModelProperty(value = "可选软件数量（不包含必选数量）（若不需自定义权益，请不要传递此属性）", position = 30)
    private Integer softOptionalNum;

    @ApiModelProperty(value = "软件license信息（若不需自定义权益，请不要传递此属性）", position = 31)
    List<LicenseUserBO> licenseUserList;

}
